除了使用Room資料庫儲存以外,若有時候只是比較簡單的資料要存
可使用SharedPreferences
需注意僅能存基本型態的資料,例如Int,String...等
這會生成一個在裝置中的檔案,裡面以key-value記錄我們的資料
主要需建立一個SharePreferences的Class
取得getSharedPreferences("參數1", 參數2)
的實例
private val pref = context.getSharedPreferences("Total", Context.MODE_PRIVATE)
getSharedPreferences只是單純的讀取資料
要對資料進行新增或刪除等編輯動作,須要再呼叫edit()
可設一變數
private val editor = pref.edit()
edit()包含幾種方法
boolean, float, int, long, String, Set<String>
所以可根據以上的功能,來建立相關的方法
//新增
fun saveData(data: String) {
editor.putString("key", data).apply()
}
//讀取
fun getData(): String? {
return pref.getString("key", "目前沒有資料")
}
//刪除
fun delete() {
editor.clear().commit()
}
簡單範例如下
class SharedPreferences(context: Context) {
// 透過 Context 的 getSharedPreferences 方法取得實例
private val pref = context.getSharedPreferences("Total", Context.MODE_PRIVATE)
private val editor = pref.edit()
fun saveData(data: String) {
editor.putString("key", data).apply()
}
fun getData(): String? {
return pref.getString("key", "目前沒有資料")
}
fun delete() {
editor.clear().commit()
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val pref = SharedPreferences(this)
tv_data.text = pref.getData()
btn_save.setOnClickListener {
if (!ed_data.text.isNullOrEmpty())
pref.saveData(ed_data.text.toString())
tv_data.text = pref.getData()
}
btn_delete.setOnClickListener {
pref.delete()
tv_data.text = pref.getData()
}
}
}
以下可以看到當資料儲存後,app重開就有讀取到
參考
https://developer.android.com/training/data-storage/shared-preferences
https://spicyboyd.blogspot.com/2018/04/appandroid-sharedpreferences.html